home *** CD-ROM | disk | FTP | other *** search
/ Freelog 115 / FreelogNo115-MaiJuin2013.iso / Internet / Filezilla Server / FileZilla_Server-0_9_41.exe / source / TransferSocket.h < prev    next >
C/C++ Source or Header  |  2011-11-06  |  4KB  |  127 lines

  1. // FileZilla Server - a Windows ftp server
  2.  
  3. // Copyright (C) 2002-2004 - Tim Kosse <tim.kosse@gmx.de>
  4.  
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9.  
  10. // This program is distributed in the hope that it will be useful,
  11. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. // GNU General Public License for more details.
  14.  
  15. // You should have received a copy of the GNU General Public License
  16. // along with this program; if not, write to the Free Software
  17. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18.  
  19. #if !defined(AFX_TRANSFERSOCKET_H__38ADA982_DD96_4607_B7D2_982011F162FE__INCLUDED_)
  20. #define AFX_TRANSFERSOCKET_H__38ADA982_DD96_4607_B7D2_982011F162FE__INCLUDED_
  21.  
  22. #if _MSC_VER > 1000
  23. #pragma once
  24. #endif // _MSC_VER > 1000
  25. // TransferSocket.h : Header-Datei
  26. //
  27.  
  28. class CControlSocket;
  29.  
  30. #define TRANSFERMODE_NOTSET 0
  31. #define TRANSFERMODE_LIST 1
  32. #define TRANSFERMODE_RECEIVE 2
  33. #define TRANSFERMODE_SEND 3
  34. #define TRANSFERMODE_NLST 4
  35.  
  36. struct t_dirlisting;
  37.  
  38. #include <zlib.h>
  39.  
  40. /////////////////////////////////////////////////////////////////////////////
  41. // Befehlsziel CTransferSocket 
  42. class CAsyncGssSocketLayer;
  43. class CAsyncSslSocketLayer;
  44. class CTransferSocket : public CAsyncSocketEx
  45. {
  46. // Attribute
  47. public:
  48.  
  49. // Operationen
  50. public:
  51.     CTransferSocket(CControlSocket *pOwner);
  52.     void Init(t_dirlisting *pDir, int nMode);
  53.     void Init(const CStdString& filename, int nMode, _int64 rest);
  54.     inline bool InitCalled() { return m_bReady; }
  55.     void UseGSS(CAsyncGssSocketLayer* pGssLayer);
  56.     bool UseSSL(void* sslContext);
  57.     virtual ~CTransferSocket();
  58.  
  59. // ▄berschreibungen
  60. public:
  61.     int GetMode() const;
  62.     BOOL Started() const;
  63.     BOOL CheckForTimeout();
  64.     void PasvTransfer();
  65.     int GetStatus();
  66.     bool InitZLib(int level);
  67.     bool GetZlibStats(_int64 &bytesIn, _int64 &bytesOut) const;
  68.     __int64 GetCurrentFileOffset() const { return m_currentFileOffset; }
  69.     bool WasActiveSinceCheck() const { return m_wasActiveSinceCheck; }
  70.  
  71.     BOOL pasv;
  72. // Implementierung
  73. protected:
  74.     virtual void OnSend(int nErrorCode);
  75.     virtual void OnConnect(int nErrorCode);
  76.     virtual void OnClose(int nErrorCode);
  77.     virtual void OnAccept(int nErrorCode);
  78.     virtual void OnReceive(int nErrorCode);
  79.  
  80.     virtual int OnLayerCallback(std::list<t_callbackMsg>& callbacks);
  81.  
  82.     void EndTransfer(int status);
  83.  
  84.     t_dirlisting *m_pDirListing;
  85.     BOOL m_bSentClose;
  86.     CStdString m_Filename;
  87.     bool m_bReady;
  88.     BOOL m_bStarted;
  89.     BOOL InitTransfer(BOOL bCalledFromSend);
  90.     int m_nMode;
  91.     int m_status;
  92.     CControlSocket *m_pOwner;
  93.     _int64 m_nRest;
  94.     BOOL m_bBinary;
  95.     HANDLE m_hFile;
  96.     char *m_pBuffer;
  97.     char *m_pBuffer2; // Used by zlib transfers
  98.     unsigned int m_nBufferPos;
  99.     BOOL m_bAccepted;
  100.     SYSTEMTIME m_LastActiveTime;
  101.     bool m_wasActiveSinceCheck;
  102.     CAsyncGssSocketLayer* m_pGssLayer;
  103.     
  104.     CAsyncSslSocketLayer* m_pSslLayer;
  105.     void* m_sslContext;
  106.  
  107.     unsigned int m_nBufSize;
  108.     bool m_useZlib;
  109.     z_stream m_zlibStream;
  110.     __int64 m_zlibBytesIn;
  111.     __int64 m_zlibBytesOut;
  112.     
  113.     __int64 m_currentFileOffset;
  114.  
  115.     bool m_waitingForSslHandshake;
  116.  
  117.     bool m_premature_send;
  118. };
  119.  
  120.  
  121. /////////////////////////////////////////////////////////////////////////////
  122.  
  123. //{{AFX_INSERT_LOCATION}}
  124. // Microsoft Visual C++ fⁿgt unmittelbar vor der vorhergehenden Zeile zusΣtzliche Deklarationen ein.
  125.  
  126. #endif // AFX_TRANSFERSOCKET_H__38ADA982_DD96_4607_B7D2_982011F162FE__INCLUDED_
  127.